/*
 * @lc app=leetcode.cn id=168 lang=cpp
 *
 * [168] Excel表列名称
 */

#include <limits.h>

#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

// @lc code=start
class Solution {
public:
    string convertToTitle(int columnNumber) {
        string result = "";             // 保存结果
        int number = columnNumber;      // 保存商
        int remainder = 0;              // 保存余数

        // 辗转相除法
        while (number > 0) {
            remainder = number % 26;
            number = number / 26;

            // 如果余数为 26，只需要一个字母即可
            if (remainder == 0) {
                remainder = 26;
                number--;
            }

            result.push_back('A' + remainder - 1);
        }
        
        // 翻转字符串
        reverse(result.begin(), result.end());

        return result;
    }
};
// @lc code=end

